package task11;

/**
 * @author Administrator
 * 测试类
 */
public class AnimalTest {
    public static void main(String[] args) {
        // 引用和指向都是子类，既可以调用重写方法又可以调用新增的方法
        Cat cat=new Cat();
        cat.speak();
        cat.skill();


        // 利用多态 创建2个对象
        // 多态：引用是父类，指向子类
        Animal kitty=new Cat();
        Animal bobi=new Dog();
        // 调用方法，观察

        // 1）调用子类重写的方法
        kitty.speak();
        // 3) 不能调用子类新增的方法
       // kitty.skill(); // 出错
        bobi.speak();
        // 2) 能调用父类的方法
        kitty.setName("kitty");
        String name=kitty.getName();
        System.out.println(name);

        // 多态 如何调用子类的新增的方法？  转型
        Cat c= (Cat) kitty;
        c.skill();
    }
}
